#coding=utf-8
"""
===========================
Author:杭州多测师_周sir
Time:2022/9/14 10:15
website:https://duoceshi.net
===========================
"""
# 通过 pip install openpyxl   下载openpyxl库
import openpyxl  #读取exc表格的模块
from utils.hand_path import *
import os

class Handle_Excel(object):
    '''封装一个读取excel表格的工具类'''

    def __init__(self,filename,sheet_name):
        self.filename = filename
        self.sheet_name = sheet_name

    def open(self):
        '''封装一个打开excel表格的工具方法'''
        #通过openpyxl模块调用load_workbook函数去读取filename文件的内容
        self.wb = openpyxl.load_workbook(self.filename)
        #通过self.wb这个excel文件的对象读取对应的sheet页面
        self.sh = self.wb[self.sheet_name]

    def read_data(self):
        '''封装一个读取excel表格的工具方法'''
        self.open()   #打开excel表格

        #获取表格中的每一行数据放在一个元组里
        datas = list(self.sh.rows)  #把每一行的元组数据放入一个列表当中
        # print(datas)  #datas是取到所有行数据的对象，打印出来A1.B1,C1....拿到对应的对象，没有拿到值
        # for i in datas[0]:  #通过for循环拿到里面的值，data[0]取得是第一行的数据的对象
        #     print(i.value)
        #列表解析式
        title = [i.value for i in datas[0]]  #对这个datas进行for循环，然后放在一个列表中，并赋值给到title
        # print(title)

        #创建一个空的列表，用来接受所有的测试用例
        cases = []
        for j in datas[1:]:  #对2/3/4/5/6行进行for循环遍历
            values = [k.value for k in j] #通过对j进行遍历，用k.value获取每个用例对象中的value值，然后放在一个列表中
            # print(values)
            case = dict(zip(title,values))  #title列表和values每个用例一一对应打包放入到一个字典当中
            cases.append(case)   #把每个用例追加到列表当中
        return  cases

    def write_excel(self,row,column,value=None):
        '''封装一个往excel表格里面写测试结果的工具方法'''
        #先打开表格
        self.open()

        #往固定的行和列写入value数据
        self.sh.cell(row,column,value)
        #保存数据
        self.wb.save(self.filename)

if __name__ == '__main__':
    path = os.path.join(data_path,"apicase.xlsx")
    read_excel = Handle_Excel(path,"login")
    value = read_excel.read_data()
    print(value)
    read_excel.write_excel(2,8,"通过")




































































